--[[
  class: Game.Weapon

  Player weapon entity class.

  <Common.UseWeaponInven> is REQUIRED to be enabled::
]]


--[[
  int: weaponid

  The weapon ID.

  Data Type: int / <Common.WEAPON>::
  Access: Read-Only::
]]
Game.​Weapon.weaponid


--[[
  table: user

  Table for storing user-made data.

  Data Type: table::
  Access: Read-Write::
]]
Game.​Weapon.user


--[[
  int: color

  The weapon exclusiveness color.

  Data Type: int / <Game.WEAPONCOLOR>::
  Access: Read-Write::

  Notes:
    - Applies to dropped weapons & weapon inventory menu slot.
]]
Game.​Weapon.color


--[[
  number: damage

  The individual damage power multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means more power.
    - The result = original base damage * <Common.​WeaponOption.damage> * this.
]]
Game.​Weapon.damage


--[[
  number: speed

  The player movement speed bonus multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means faster.
]]
Game.​Weapon.speed


--[[
  number: knockback

  The weapon knockback power multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means more power.
]]
Game.​Weapon.knockback


--[[
  number: flinch

  The weapon painshock/velocity slowdown power multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means more power.
]]
Game.​Weapon.flinch


--[[
  number: criticalrate

  The weapon critical damage chance rate multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means more power.
]]
Game.​Weapon.criticalrate


--[[
  number: criticaldamage

  The weapon critical damage power multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means more power.
    - The result = current damage * this.
]]
Game.​Weapon.criticaldamage


--[[
  number: bloodsucking

  The weapon healing bonus multiplier.

  Data Type: number::
  Range: 0 ~ 100::
  Access: Read-Write::

  Notes:
    - Higher means better
    - The result = current HP + (current damage * this).
]]
Game.​Weapon.bloodsucking


--[[
  bool: infiniteclip

  Enable/disable weapon infinite clip/ammo.

  Data Type: bool::
  Access: Read-Write::

  Notes:
    - Similar to trancendence-grade weapons in Zombie Scenario.

  Options:
    true  - Enabled.
    false - Disabled.
]]
Game.​Weapon.infiniteclip


--[[
  method: CreateAndDrop

  Create & spawn the weapon entity at given position.

  Access: Read-Only::

  Parameters:
    weaponid - (*int / <Common.WEAPON>*) The given weapon ID.
    position - (*table / <~Virtual Table.vector3D>*) The spawn position.

  Returns:
    (*<Game.Weapon> / nil*) The weapon entity instance (nil = Invalid weapon ID and/or position).
]]
function Game.Weapon.CreateAndDrop (weaponid, position)


--[[
  method: GetWeaponType

  Get the category of this weapon.

  Access: Read-Only::

  Returns:
    (*int / <Game.WEAPONTYPE>*) The weapon category.
]]
function Game.Weapon:GetWeaponType ()


--[[
  method: AddClip1

  Increase weapon clip with given size.

  Access: Read-Only::

  Notes:
    - Won't exceed the maximum clip size.
    - Only affected to no-clip (ammo as clip) weapons.

  Parameters:
    clip - (*int*) Clip size.
]]
function Game.Weapon:AddClip1 (clip)

